/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.foment.gem.statistic;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Dusan
 */
public class TableModel extends DefaultTableModel
{
    public static Vector<String> columns = new Vector<String>(StatisticsDialog.columns.length);

    private HashMap<String, String> translations = new HashMap<String, String>(columns.size());
    
    public TableModel()
    {
        // vektor columns koristimo da bismo dinamicki (kako se neka kolona ukloni) lakse manipulisali
        // sa nizom (uklanjanje i dodavanje), a translations - ime (na Srpskom) svake kolone
        // odgovara atributu zaposlenog (Employee)
        for (int i = 0; i < StatisticsDialog.columns.length; i++)
        {
            columns.add(StatisticsDialog.columns[i]);
            translations.put(StatisticsDialog.columns[i], StatisticsDialog.columnsEng[i]);
        }
        
        this.refresh();
    }
    // funkcija koja ce biti pozvana kada se neka kolona ukloni
    // ili ako se promeni kriterijum pretrage. Uklanjamo sve zaposlene
    // ponovo ih dodajemo, pritom tesitamo da li zaposleni zadovoljava
    // kriterijum
    public void refresh()
    {
        int rowCount = 0;
        
        this.getDataVector().clear();
        setColumnIdentifiers(columns);
        
        for (Employee e : Employee._employees)
        {
            if (!e.isSatisfyCondition())
                continue;

            rowCount++; // uvecamo redni broj zaposlenog u tabeli

            Vector<String> row = new Vector<String>(columns.size());            

            for (String attr : columns)
            {
                if( attr.equals("#"))
                {
                    row.add("" + rowCount);
                }
                else
                {
                    row.add ( e.getValue ( translations.containsKey(attr) ? translations.get(attr) : null));
                }
            }
            //System.out.println("Dodato " + e);
            addRow(row);
        }
    }
    public void removeColumn(String col)
    {
        // ako columns sadrzi col, tada ce se ukloniti i remove ce vratiti
        // true, pa ce se colCount umanjiti.
        if (columns.size() > 1) // Necemo dopustiti da se i poslednja kolona ukloni
            columns.remove(col);
            
    }

    
    public void addColumn(String col)
    {
        if (!columns.contains(col))
        {
            columns.add(col);
        }
    }
    
}
